Артур Брайтман (Arthur Breitman) - руководитель проекта Tezos, а Кэтлин Брайтман (Kathleen Breitman) - его управляющий директор. Ранее Артур занимал пост вице-президента в Goldman Sachs и Morgan Stanley. Кэтлин занималась стратегиями в банковском консорциуме R3.

В этой статье Брайтманы делятся своим мнением по поводу развития смарт-контрактов, выделяя три проблемы, которые необходимо решить для их успешного функционирования. 

Смарт-контраты в качестве «киллер-приложения»

Смарт-контракт (или умный контракт) представляет собой компьютерную программу, которая автоматически выполняет условия контракта на блокчейне. В принципе, смарт-контракты можно использовать в разных целях, например, при заключении договора на предоставление услуг беспроводной связи, сдаче в аренду квартиры или комнаты, подписании трудовых договоров с фрилансерами, совершения автоматических платежей – одним словом, везде, где вы захотите избавиться от посредников.

Учитывая то, что в десяти наиболее популярных криптовалют хранятся активы на сумму в более 17 миллиардов долларов, существует хорошая возможность добавить уже существующим активам блокчейна дополнительную гибкость и практичность, внедрив в них возможности, которые несут в себе смарт-контракты.

Очевидно также, что эта инновационная технология предлагает устойчивый потенциал традиционным рынкам.

К примеру, рассмотрим сценарий использования деривативов внебиржевого рынка, который насчитывает около 700 триллионов долларов в номинальной стоимости в год. Перемещение даже небольшой доли объёмов его торгов в смарт-контракты предоставит в перспективе огромную экономию расходов. 

Однако, прежде чем смарт-контракты действительно смогут исполнить обещанное, необходимы дальнейшая разработка и оптимизация обеспечивающих их платформ. Ниже представлены три проблемы, на которые следует обратить основное внимание в 2017 году.

Возможность формальной верификации

Написать код, который будет работать в точности так, как мы хотим, чрезвычайно сложно. Программное обеспечение уязвимо перед ошибками (багами) и всевозможными атаками – однако, в случае со смарт-контрактами под угрозу попадают действительные активы. 

Здесь необходим более качественный метод, который будет гарантировать безопасность и надёжность умных контрактов. Один из возможных способов – использование формальной верификации, то есть алгоритма проверки кода для доказательства того, что он действует в соответствии с поставленными задачами.

Смарт-контракты должны имплементироваться на языке, лёгком для верификации. Поэтому для кода смарт-контракта больше подходят функциональные языки наподобие Haskell или OCaml, нежели императивные языки, такие как C/C++, Java и JavaScript, ведь архитектуру функциональных языков легче обосновать и формально верифицировать. Конечно, большинству программистов больше знаком JavaScript, однако в данном случае между простотой использования и безопасностью необходимо сделать выбор в пользу последнего.

С другой стороны, необходимо помнить о том, что формальная верификация имеет определённые ограничения. Она не является полностью автоматической и всё ещё требует человеческого участия.

Кроме того, формальная верификация может доказать только те характеристики, которые мы намеревались проверить; если вы по ошибке проверите не те функции, уязвимости могут остаться открытыми. Тем не менее, при правильной имплементации это будет шаг в правильном направлении.

Обеспечение прозрачности

Одним из крупнейших экспериментов со смарт-контрактами в 2016 году стал проект TheDAO – виртуализированный инвестиционный канал, который привлёк средства на сумму более 150 миллионов долларов, а затем пал жертвой взломщиков, выведших на свои аккаунты 50 миллионов долларов.

Во время анализа TheDAO, которым занимались специалисты по работе с безопасностью, им оказалось очень сложно понять, каким образом он функционировал на самом деле, ведь полностью обозрим в блокчейне был только байткод (код виртуальной машины) TheDAO, и не было понятно, какая именно версия исходного кода использовалась. 

Код смарт-контракта должен быть прозрачным и исключать лазейки, чтобы при заключении договора мы были полностью уверены в том, что подписываем. Кроме того, прозрачность помогает быстрее обнаружить ошибки.

Один из способов осуществления прозрачности - использование интерпретируемого языка программирования вместо компилируемого. Именно в этом случае в блокчейне будет виден фактический код, доступный для изучения и проверки.

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

Чёткий механизм управления

Поскольку смарт-контракты хранятся в блокчейне, код по определению неизменен. Однако, программные продукты не совершенны. Изменения с платформами происходили и будут происходить, а это, в свою очередь, может повлиять на работу кода смарт-контракта. То, как поведёт себя с такими изменениями тот или иной блокчейн, очень важно для сохранения доверия к его платформе.

При отсутствии чёткой модели управления отсутствует всякая уверенность в том, что земля внезапно не уплывёт из-под ваших ног. Если это будет кому-то на руку, разработчики ядра или кто-то другой, управляющий шоу, смогут с лёгкостью изменить правила игры на полпути.

Несомненно, то, насколько подвержен будет блокчейн такого рода действиям, во многом зависит от его сообщества. И всё же, блокчейнам будущего необходимы чёткие принципы управления, заложенные с самого начала, так чтобы все изменения протокола были предсказуемы, и никто не страдал от неожиданных сюрпризов.

Как только все эти приёмы заработают, смарт-контракты начнут действовать в полную силу и сформируют основу, состоящую из множества контрактов, которые мы ежедневно заключаем, от счетов за электроэнергию и оплаты собачьей няни до арендной платы за жильё – и всё это незаметно, через интернет, в очередной раз упрощая и улучшая нашу жизнь. 

Так же, как в случае с интернетом, мы не будем думать о лежащей в основе этого процесса технологии, мы просто будем знать, что это работает – бесперебойно и надёжно.