Фан Ян
Начнем с положительной ноты.
Обновление Ethereum Constantinople должно было выйти 16 или 17 числа.
15 января ChainSecurity обнаружила потенциальную уязвимость, если обновление будет реализовано в соответствии с планом. ChainSecurity — это независимый аудит, а не часть фонда Ethereum. Он по-прежнему является частью открытого сообщества Ethereum. Это хороший признак того, что сообщество смогло найти ошибку и отреагировать соответствующим образом, вместо того чтобы внедрять обновление.
НО…
Эта уязвимость также показывает тот факт, что Ethereum НЕ имел наилучшего фундамента на ранних стадиях своего развития. Даже Виталик Бутерин, соучредитель и ведущий архитектор Ethereum, признал на Reddit, что другой подход (в начале разработки) был бы лучше.
Все действительно неприятные проблемы с безопасностью, с которыми мы сталкивались, были связаны с взаимодействием между различными компонентами. Квадратичные DoS-атаки объединяют память EVM и кадр стека вызовов или возвраты и кадр стека вызовов. Эта потенциальная угроза возникла из-за взаимодействия между газом по умолчанию при отправке, затратами на газ SSTORE и проблемами повторного входа. Таким образом, если у вас есть N функций протокола, есть N2 способа, которыми они потенциально могут сломаться. Я бы сказал, что мой личный вывод из этого заключается в том, чтобы гораздо более подробно записывать инварианты (свойства, гарантированные протоколом), на которые мы полагаемся, чтобы мы могли сверяться с ними при изменении вещей. (Реддит)
Последнее утверждение переводится как — мы должны были четко прописать математические доказательства и модели для протокола еще до разработки.
Отраслевой термин для этого — «Официальная проверка».
В контексте аппаратных и программных систем формальная верификация – это действие по доказательству или опровержению правильности предполагаемых алгоритмов, лежащих в основе системы, по отношению к определенной формальной спецификации или свойству с использованием формальных методов проверки. математика. (Википедия)
По-видимому, функциональный язык программирования лучше всего подходит для этого подхода, но Ethereum использует другой вид языка программирования. С другой стороны, Cardano использует функциональный язык программирования и использует формальный подход к проверке. Действительно, Чарльз Хоскинсон, не теряя времени, указал на это в Твиттере:
Так что же это за уязвимость?
Лучшим ресурсом будет статья на Medium от ChainSecurity:
Предстоящее обновление Constantinople для сети ethereum вводит более низкую стоимость газа для определенных операций SSTORE. В качестве нежелательного побочного эффекта это делает возможным повторные атаки при использовании address.transfer(…) или address.send(…) в смарт-контрактах Solidity. Раньше эти функции считались безопасными для повторного входа, но теперь они таковыми не являются.
От: Константинополь активирует новую реентерабельную атаку (средняя)
Модернизация, среди прочего, должна была снизить расход газа для операций по хранению. Это конкретное изменение позволило бы злоумышленнику украсть деньги с помощью смарт-контракта Ethereum, а именно контракта PaymentSharer.
Согласно Toshitimes.com, Эта уязвимость, если ее использовать, позволит злоумышленникам неоднократно перекачивать ETH из смарт-контракта с помощью ошибки, аналогичной той, которая привела к взлому DAO. («Тоши Таймс)
Эфириум столько раз откладывал обновление Константинополя, что это уже не сюрприз. Но эти уязвимости продолжают напоминать сообществу, что предстоит еще много работы, если Ethereum хочет сохранить лидерство в области блокчейна смарт-контрактов.
Многие будут ссылаться на эту ошибку как на доказательство того, что Cardano — лучший блокчейн. На данный момент мы можем, по крайней мере, сказать, что у Cardano был лучший и более разумный подход к закладке основы для разработки. Если Ethereum не будет править своей сложностью, он, скорее всего, станет жертвой собственных амбиций и успеха.
От CoinPowR