Не пишите собственные смарт-контракты
В мире программного обеспечения можно успешно существовать, пропагандируя идею: «Не создавайте свою собственную криптографию». Эта фраза имеет два значения. Первое значение заключается в том, что вы не должны изобретать свою собственную криптографию. Не стоит придумывать алгоритмы шифрования, алгоритмы хэширования, алгоритмов PoW, алгоритмы подписи или действительно любые алгоритмы, которые используются для обеспечения безопасности. Во-вторых, также не стоит реализовывать алгоритмы, которые уже известны как безопасные. Не нужно создавать коды, связанные с криптографией. Лучшим вариантом станет использование библиотеки, написанной экспертом и рассмотренной несколькими другими экспертами.
Почему стоит так поступать? Криптография сама по себе не так уж плоха. Множество школьников хорошо разбираются в алгоритме RSA, а код для его реализации - это всего лишь математика. Если на самом деле не так сложно понять криптографию и представить ее в действии, почему же эта отрасль так явно дает понять, что вы должны быть ограничены в самостоятельных действиях?
Дело сводится к тому, что атакущие очень умны. Гамма потенциальных атак на криптографию очень широка. Некоторые атаки являются нестандартными и запутанными, а многие - демонстрируют высокую степень креативности и интеллекта. Единственный способ написать безопасную криптографию - это знать каждый тип атаки и защищаться от каждой атаки одновременно, не допуская ошибок. Именно это делает криптографию сложной, и это то, с чем регулярно борются специалисты, даже работая в команде.
Если у команды экспертов регулярно возникают проблемы с написанием защищенных продуктов, какова вероятность того, что не эксперт должен справиться с этой задачей? Практически нулевая. Если вы не эксперт, маловероятно, что вы напишете безопасный криптографический код. Людям следует оставить все разработки экспертам по очень веской причине: защита от умных аттакеров очень сложна.
Смарт-контракты, хотя и не схожи с криптографией в техническом плане, страдают той же проблемы: они должны быть защищены от умных злоумышленников. Смарт-контракты подрываются несколькими способами. Во-первых, есть возможность получить денежное вознаграждение за определенные атаки. Если вы обнаружите уязвимую черту в смарт-контракте, которая позволяет произвести кражу, можно получить десятки или даже сотни миллионов долларов в криптовалюте. Таким образом, смарт-контракты должны иметь дело не только с обычными аттакерами, но и с теми, кто имеет высокую мотивацию. Одна ошибка может означать потери в миллионах долларов.
Смарт-контракты охватывают гораздо более широкий спектр областей, чем криптография. Это не преуменьшение заслуг последней - для написания защищенной криптографии требуются знания в нескольких сферах. Но смарт-контракты также включают такие области, как экономика, теория игр и социальные исследования. Тот, кто хочет атаковать децентрализованную систему, имеет гораздо больше доступных инструментов, чем тот, кто хочет атаковать часть криптографического кода. По мере созревания экосистемы блокчейн и злоумышленникам будет доступно больше инструментов, и атаки станут более распространенными и более сложными.
Краудфандинговый проект «The DAO» - отличный пример, прежде всего потому, что его создатели совершили много ошибок. В конечном счете, такая ошибка уничтожила «The DAO». Но даже если бы она вовремя была исправлена
, злоумышленники нашли бы другие уязвимые места проекта. Такой популярный проект как «The DAO» был плохо разработан.
Можно с легкостью утверждать, что это одна из худших вещей в экосистеме, как и большинство проектов, которые сделали ICO. Все они имеют множество недостатков.
Структура кода Blockchain намного сложнее, чем структура смарт-контракта. Смарт-контракты содержат десятки-сотни строк кода. У защищенного блокчейна будет не менее десяти тысяч строк кода, и тут даже одна ошибка может сделать весь проект уязвимым. Большинство технологий блокчейн, не связанных с биткойнами, обладают значительными системными слабостями. Но такие недочеты часто не раскрываются до тех пор, пока вы однажды не уничтожите многомиллионный проект. Часто определенные предупреждающие сигналы облегчают списание этих типов проблем задолго до наступления критического момента.
Даже эксперты могут совершать простые ошибки, которые приводят к потерям в миллионы долларов. Для того чтобы писать безопасные приложения, вы не должны быть профессионалом. Вы должны иметь четкое понимание каждого типа атаки, и уметь защищаться от них. Будучи креативными, аттакеры могут создать впечатление, что вы в безопасности, когда в действительности злоумышленник может взломать ваш код.
Благодаря Биткойну глубже изучается структура блокчейна, и подавляющее большинство altcoins и altchains имеют множество структурных решений, которые, как известно исследователям, являются небезопасными или в противном случае проблематичными. Общие слабые места включают в себя одноранговую сеть, стратегии майнинга, что-либо, связанное с Proof of Stake, и негибкие решения в области разработки графических процессоров. Несмотря на существование множества работ, посвященных самым распространенным слабостям в структуре блокчейна, они никогда не рассматриваются как научные статьи, и вместо этого отправляются в IRC. Такая ситуация происходит в следствие незрелости пространства в целом.
Блокчейн переживает кризис безопасности. Обычный проект с технологией блокчейн имеет множество недостатков, что в очередной раз показывает низкую осведомленность о безопасности данной технологии. В индустрии программного обеспечения безопасность должна быть предоставлена
экспертам. В блокчейн и смарт-контрактной индустриях должны понимать, что разработчики пишут приложения, чувствительные к безопасности, и что требуется тот же опыт, который необходим для написания криптографии.
Не пишите смарт-контракты, подразумевающие большой риск, самостоятельно. Не создавайте свои проекты с технологией блокчейн, не привлекая профессионалов. И запомните, что немалое число проектов в этой сфере были написаны людьми, которые не следуют этим советам.
Ссылка на источник