Насколько идеальна технология блокчейн: процент отказов у Ethereum 0.36%
Исследователи изучили 1 миллион смарт-контрактов Ethereum: 3 686 из них были нарушены
«Блокчейн идеален — это самый безопасный способ проведения транзакций, позволяющий перевести деньги куда угодно за считанные минуты и более дешевый по сравнению с традиционными методами». Только вот до тех пор, пока он не дает сбой. А что происходит, если это случается? Процент отказов у эфириума (ETH) 0.36%.
«Докопаться до совершенства»
Блокчейн прославился своей безопасностью, прозрачностью, простотой использования, и считается настоящим совершенством мира технологий. Но бывают ли у него сбои?
Недавно исследователи изучили 1 миллион контрактов эфириума (ETH) и заявили, что 3 686 из них были нарушены. Это количество может показаться крохотным, ведь остальные 99.64% контрактов прошли без проблем; с таким показателем ETH получил бы 5+ в любой школе мира. Однако этот небольшой процент нарушенных контрактов может стоить миллионы долларов для тех, кто переводит средства через сеть. Неудивительно, что причиной проблемы является не блокчейн ETH, а люди, программирующие его.
В отчете под названием «Поиск жадных, щедрых и суицидных контрактов», составленном известными экспертами в сфере блокчейн, был изучен миллион контрактов ETH. Среди экспертов исследования были Ивица Николич из Школы информационных технологий в Сингапуре, а также ее коллеги Пратик Саксена и Аашиш Коллури. Другие видные авторы этого отчета — Илья Сергей из Университетского колледжа Лондона, Великобритания, и Акинас Хобор из Школы и колледжа информационных технологий Йельского университета.
Авторы отчета — это не просто среднестатистические разработчики, а настоящие лидеры в сфере блокчейна и других технологий. Тот факт, что они выделили свое время на изучение данного вопроса, показывает важность понимания, что значат неудавшиеся транзакции для блокчейна и его пользователей.
Исследователи выявили несколько типов «дефектных» контрактов. Все дефектные контракты делятся на три категории, в зависимости от природы проблем:
- «Жадные контракты»: выражаясь простыми словами, такие контракты можно использовать для блокировки находящихся в них ETH
- «Щедрые контракты»: контракт, который может использоваться для перевода ETH на другой адрес вместо указанного. Это может произойти случайно или умышленно
- «Суицидные контракты»: контракт, который может «уничтожить» кто-то посторонний
«Жадные контракты»
Название говорит само за себя. Жадный контракт не хочет отдавать находящиеся в нем ETH. Все ETH в контракте могут быть заморожены на неопределенное время. Исследователи нашли множество примеров в адресах контрактов, которые принимали, но не переводили ETH дальше.
Когда такой контракт получает ETH, средства будут «потеряны», потому что их нельзя перевести на другой адрес. Это может произойти случайно или по злому умыслу (зачем кому-то замораживать ETH в адресе контракта, который не сможет перевести средства дальше?). Причин немного, но одна из них — саботаж.
«Щедрые контракты»
В большинстве случаев, в конце операции смарт-контракты в сети ETH должны освободить средства. Большинство игр эфириума основаны на смарт-контрактах, где игрок может либо «выиграть», либо «купить» позицию. Если продажи или выигрыша не произошло, средства отправляются начальному пользователю.
Дефект щедрых контрактов заключается в том, что несвязанный адрес может найти способ снять средства, без наличия соответствующей причины в смарт-контракте. Такое снятие приводит к потере средств отправителя, и получатель так и не получает ожидаемую транзакцию.
Суицидные контракты
«Аварийные выключатели» вполне распространены в смарт-контрактах. Они используются, если контракт дает сбой, был выпущен случайно, или если возникли какие-то проблемы. Однако иногда такие механизмы дают сбой и затрагивают весь контракт.
Parity — наиболее частый пример суицидного контракта. Система не устанавливает правильное условие, запускающее выключатель, что позволяет любому, кто разбирается в блокчейне, управляют смарт-контрактом. Поэтому смарт-контракт больше не является действительно «смарт»!
Изучение четности
Parity — популярный кошелек эфириума, хранящий токены на онлайн платформе. Предполагалось, что благодаря такой онлайн платформе пользователь будет постоянно иметь контроль над своими токенами и их переводами.
Однако возникла большая проблема. Разработчик случайно или намеренно (в зависимости от того, у кого вы спросите) удалил контракт библиотеки Parity. Группа исследователей называет это «суицидным контрактом». Кроме того, Parity-кошельки — жадные, и могут навсегда заморозить ETH. Эпическая ошибка в программировании привела к потере сотен миллионов долларов в ETH.
Система Parity лежала в основе многих контрактов, что привело к возникновению «суицидных» и «жадных контрактах». Контракт библиотеки Parity был бы «суицидным», а контракт кошелька — «жадным».
Solidity: язык эфириума
Блокчейн эфириума уникален, поскольку он использует язык кодировки под названием Solidity. Самый большой недостаток продвинутых языков, таких как Solidity, заключается в том, что программистам приходится изучать абсолютно новый язык для создания контрактов ETH. Любая ошибка в коде может привести к непредвиденной ошибке. А иногда ошибка может намеренно добавляться в код в каких-то подлых целях. Учитывая стоимость ETH, ошибка, которая замораживает или позволяет снять средства, может стоить очень дорого.
Parity имеет одну из самых дорогих ошибок кодировки в истории. Но пока программисты изучают новые языки, невозможно избежать определенного процента ошибок. Solidity — язык, который полезно освоить для кодировки в сети эфириума, но если он освоен не на блестящем уровне, это может повлечь за собой неблагоприятные последствия.
Заключение: 99.6% успеха — это все равно чертовски хороший результат!
Почти в любой системе оценок 99.6% считается результатом намного выше среднего. Однако если даже меньше половины процента может привести к миллионным потерям, то, чтобы считаться положительным, результат должен быть 100%. Подобные исследования помогут разработчикам понять проблемы при использовании Solidity и выявить наиболее уязвимые места контрактов. Изначально исследователи планировали найти баги и ошибки в программах прежде, чем они станут использоваться. Но в результате они еще и составили классификацию дефектных контрактов.
Эфириум — не самая простая сеть для кодировки, поскольку программисту приходится учить абсолютно новый язык — Solidity. Критики ETH утверждают, что такие криптовалюты как Cardano, DRGN, EOS, ICX, NEO и Stratis намного более простые в использовании или позволяют программировать смарт-контракты на уже знакомых разработчикам языках.
Хотелось бы надеяться, что всестороннее исследование выявило врожденные недостатки вовремя, пока пострадало не так много пользователей. Эфириум занимал очень сильные позиции в 2017. Но в 2018 году, который уже готовит множество вызовов, все будет не так стабильно. ETH — лидер по количеству запущенных на его платформе ICO и Dapps, поэтому несмотря на растущую конкуренцию, он имеет лучшие шансы захвата рынка.
ETH можно рассматривать как ценный ресурс в криптовалютном пространстве. Это надежная, долгосрочная игра, хотя в процентном соотношении эфириум может и не стать главным победителем в 2018.
Комментарии: