Программного обеспечения без ошибок не существует. Любой крупный фрагмент кода подвергается отладке, и это неизбежная часть процесса разработок. Однако если этот код контролирует цифровые активы, стоимость которых исчисляется миллионами долларов, гарантия отсутствия ошибок становится не просто желательной, а жизненно важной. Как показал недавний взлом биржи Bancor и целая череда более мелких неприятностей со смарт-контрактами, на данный момент создание свободного от ошибок кода доступно только самым профессиональным командам.
Ошибки стоили многим значительных сумм в криптовалюте
Ошибкам подвержены все криптовалюты. Даже Биткоин — эталон, по которому измеряются все другие цифровые валюты, не является исключением. Примером может служить ошибка переполнения блока в 2010 году, в результате которой в блоке 74638 было создано 180 миллиардов биткоинов. Однако, если эта уязвимость была быстро устранена без каких-либо потерь, то пользователям Эфириума повезло гораздо меньше. Инциденты с проектами DAO, Parity и Bancor, в результате которых были потеряны или заморожены средства на десятки миллионов долларов, отнесли к уязвимости их смарт-контрактов. Общая же сумма цифровых активов, потерянных в результате ошибок кода, эквивалентна 1 миллиарду долларов.
Виртуальная машина Эфириума позволяет использовать смарт-контракты, применяющие очень сложную логику. Однако, чем сложнее эта логика, тем выше вероятность появления ошибки, тем более что инфраструктура системы еще не устоялась. Solidity, основной язык, используемый для программирования смарт-контрактов Эфириума, освоить несложно, а владеющие им специалисты ценятся высоко, что привлекает неквалифицированных разработчиков. Блокчейны с поддержкой смарт-контрактов пытаются уменьшить эти ошибки, уходя от Solidity к более распространенным языкам программирования.
Как новые блокчейны подходят к смарт-контрактам
Главный разработчик смарт-контрактов проекта Stratis Джордан Эндрюс рассказал, что их платформа использует язык C#, поскольку он предоставляет доступ к таким инструментам, как декомпиляторы, редакторы, наборы для тестирования и отладки в Visual Studio. То есть «любой контракт можно декомпилировать из байт-кода до реального C#». Он противопоставляет это Solidity, находящемуся на «деликатном этапе разработки, когда декомплировать большое количество контрактов должным образом невозможно. Тот факт, что проверить можно только около 1% контрактов в Эфириуме, представляет проблему, так как, по сути, декомпиляторы не работают».
Если проект Stratis главным образом ориентирован на предприятия, то другие блокчейны нацеливаются на Эфириум, пытаясь с ним конкурировать. Однако они еще не достигли того состояния готовности, в котором они смогут предложить лучшее решение. Tezos будет использовать для своих смарт-контрактов формальную проверку в виде упрощенного программного языка Michelson, обладающего повышенной безопасностью. Как результат, на нем будет сложнее создавать произвольные программы, что, в свою очередь, означает снижение вероятности фатальных ошибок.
Для решения таких вопросов, как мультиподписи, пакеты транзакций и временные привязки, проект Stellar использует ограниченные возможности смарт-контрактов. Смарт-контракты Cardano должны пройти официальную проверку, гарантирующую отсутствие ошибок и использование виртуальной машины IELE. Смарт-контракты EOS используются в качестве предварительно компилированной сетевой сборки, применяющей C/C++. Так же как Cardano и Tezos, EOS пока находится на ранней стадии развития, и его протоколом занимается небольшое количество разработчиков. Для сравнения, число разработчиков на платформе Эфириума достигает 35 000, таким образом, на данный момент он остается главным блокчейном для смарт-контрактов в индустрии.
Формальные проверки сократят ошибки
Джорждан Эндрюс уверен, что увеличение применения формальных проверок должно сделать смарт-контракты менее уязвимыми:
«Сейчас очень часто обсуждаются формальные проверки — их идея состоит в том, что вы можете проверить, что контракт будет вести себя как задумано. Это очень важно».
Поскольку блокчейн постепенно проникает во все большее количество отраслей, роль смарт-контрактов также существенно растет. Со временем компьютерный код будет контролировать цифровые активы на сотни миллиардов долларов. Если же смарт-контракты станут частью экономики, вопрос уменьшения количества ошибок станет жизненно важным. Однако пока опасные ошибки неизбежны, и они существуют. Вопрос в том, кто обнаружит их первым – «белые» или «черные»?